js获取扫码枪输入数据的方法
1、扫码枪相当于键盘输入设备,输入一连串数字后加一个enter键。但在实际开发中需要区分是扫描枪输入还是键盘用户输入,区别在于扫码枪输入很快。
let code = '';let lastTime, nextTime;
let lastCode, nextCode;
window.document.onkeypress = (e) => {
if (window.event) { // IE
nextCode = e.keyCode;
} else if (e.which) { // Netscape/Firefox/Opera
nextCode = e.which;
}
if (nextCode === 13) {
if (code.length < 3) return; // 手动输入的时间不会让code的长度大于2,所以这里只会对扫码枪有
console.log(code); // 获取到扫码枪输入的内容,做别的操作
code = '';
lastCode = '';
lastTime = '';
return;
}
nextTime = new Date().getTime();
if (!lastTime && !lastCode) {
code += e.key;
}
if (lastCode && lastTime && nextTime - lastTime > 30) { // 当扫码前有keypress事件时,防止首字缺失
code = e.key;
} else if (lastCode && lastTime) {
code += e.key;
}
lastCode = nextCode;
lastTime = nextTime;
}
PS:下面看下js获取USB扫码枪数据的代码
前言
找了很多相关的教程不太好用,汲取各家之长总结精简了一下
原理
扫码枪扫描到的条形码每一位会触发一次onkeydown事件
比如扫描条码位‘1234567890'的条形码,会连续执行10次onkeydown事件
条码扫描到最后一位,会直接触发Enter
需要引入jQuery,我这里用的是vue
window.onload = (e)=> {document.onkeydown = (e)=> {
let nextCode,nextTime = '';
let lastTime = this.lastTime;
let code = this.code;
if (window.event) {// IE
nextCode = e.keyCode
} else if (e.which) {// Netscape/Firefox/Opera
nextCode = e.which
}
nextTime = new Date().getTime();
//字母上方 数字键0-9 对应键码值 48-57; 数字键盘 数字键0-9 对应键码值 96-105
if((nextCode>=48&&nextCode<=57) || (nextCode>=96&&nextCode<=105)){
let codes = {'48':48,'49':49,'50':50,'51':51,'52':52,'53':53,'54':54,'55':55,'56':56,'57':57,
'96':48,'97':49,'98':50,'99':51,'100':52,'101':53,'102':54,'103':55,'104':56,'105':57
};
nextCode = codes[nextCode];
nextTime = new Date().getTime();
}
// 第二次输入延迟两秒,删除之前的数据重新计算
if(nextTime && lastTime && nextTime-lastTime>2000){
code = String.fromCharCode(nextCode);
}else{
code += String.fromCharCode(nextCode)
}
// 保存数据
this.nextCode = nextCode;
this.lastTime = nextTime;
this.code = code;
// 键入Enter
if(e.which == 13) {
// 判断 code 长度(这里就获取到条码值了,以下业务自由发挥)
code = $.trim(code)
if (code.length == 13) {
this.$message('A类条码:' + code);
} else if (code.length == 23) {
this.$message('B类条码:' + code);
} else if (code.length == 0) {
this.$message('请输入条码');
} else{
this.$message('条码不合法:' + code);
}
//键入回车务必清空code值
this.code = ''
return false;
}
}
}
以上就是一起看看js获取扫码枪输入数据的方法的详细内容,更多请关注网站的其它相关文章!

相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jz/wp/9710.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
ludou_se_only); } add_action(s
时间:2021-01-23
-
所以经常导致输错密码的
时间:2021-01-23
-
WordPress措施打开速度慢的
时间:2021-01-22
-
WordPress回覆评论自动添加
时间:2021-01-22
-
我们可以通过下面的代码
时间:2021-01-22
-
如何修改WordPress默认脚色
时间:2021-01-20
-
同样的修改文件就行
时间:2021-01-20
-
少数善意的转载者既使没
时间:2021-01-20
热门文章
-
WordPress新手安装教程(图文)
时间:2020-12-28
-
在设置菜单中增加WordPress私密 隐藏的全部
时间:2021-01-10
-
WordPress博客程序常见错误的解决方法
时间:2020-12-28
-
WordPress程序打开速度慢的三种解决方法
时间:2021-01-10
-
wordpress使用代码在每篇文章尾部添加版权
时间:2020-12-14
-
WordPress博客措施常见错误的办理要领
时间:2021-01-15
-
关于WordPress的SEO优化相关的一些PHP页面脚
时间:2021-01-07
-
WordPress措施打开速度慢的三种办理要领
时间:2021-01-22
-
详解WordPress中的头像缓存和署理中的缓存
时间:2021-01-15
-
少数善意的转载者既使没有看到版权信息
时间:2021-01-20
